/**
 * 
 * Sirve para ingresar los alimentos de un menu seleccionado en la tabla para
 * generar el menu semanal y validar el formulario de InfoCartaSemanal
 * @author Sofia Mejia <asmejia@utn.edu.ec>
 */
$(function() {
    $('#btn-Guardar-Info-Carta').attr('disabled', true);
    $('#carta-nutricional-grid').hide();
    $id_info = $("#InfoCartaSemanal_id").val();
    if ($id_info != '') {
        verCargandoDatosModal();
        $.getJSON('cargarMenus/id/' + $id_info, function(data) {
        }).done(function(data) {
            $.each(data, function(key, value) {
                busquedaDescripcionAlimentos(value[0], value[1], value[2]);
            });
        });
        if (idMenus.length < 20) {
            $('#btn-Guardar-Info-Carta').attr('disabled', true);
        }
        $.getJSON('getEdadMenu/id/' + $id_info, function(data) {
        }).done(function(data) {
            $('#selStatus option[value="' + data + '"]').attr("selected", true);
            $.fn.yiiGridView.update('carta-nutricional-grid', {
                data: $('#selStatus').serialize()
            });
            $('#carta-nutricional-grid').show();
            $('#list-edades').hide();
        });
        $("#dias").attr('disabled', false);
    }
    $('#selStatus').on('change', function() {
        if ($(this).val() != 'empty') {
            $('#carta-nutricional-grid').show();
        }
    })

    $('#cuerpoTableSeleccionado th').addClass('span4');
    $('#btnIngresarMenu').on('click', function(e) {
        acumulador = "";
        $("#carta-nutricional-grid table tbody input:checked").each(//todo hacer funcion para usar 
                function() {
                    acumulador += "," + $(this).attr("value");
                    $(this).prop('checked', false); //desactiva la casilla
                }
        );
        if (acumulador != "") {
            dia = $('#dias option:selected').text();
            if (dia == '-- Seleccione --') {
                bootbox.alert('Debe seleccionar un día de la semana');
            }
            if (acumulador != '' && dia != '-- Seleccione --') {
                busquedaDescripcionAlimentos(acumulador, dia, null);
                $('#list-edades').hide();
            }
        } else {
            bootbox.alert("Debe seleccionar un men&uacute; alimenticio");
        }
    });
    $('[eliminar=yes]').on('click', function() {
        idSemana = $(this).attr('id');
        if (idSemana != '') {
            buscarVarianteCarta(idSemana);
        }
    });

    $('#btn-Guardar-Info-Carta').on('click', function() {
        if (idMenus.length < 20) {
            bootbox.alert("Debe llenar la tabla de men&uacute; semanal");
        }
    });
});

/**
 * Pregunta al usuario si quiere borrar el contenido de la tabla del menusemanal
 * @author Sofia Mejia <asmejia@utn.edu.ec>
 * @returns boolean si es true vacia si es false no hace nada
 */
function accionResetear() {
    bootbox.confirm("Se vaciara la tabla del men&uacute; semanal. Desea continuar ?", function(result) {
        if (result == true) {
            resetarTablaMenuSemanal();
            $("#list-edades").show();
        } else {
        }
    });
}

/**
 * Elimina la tabla en el html y la vuelve a crear con las celdas vacias
 * @author Sofia Mejia <asmejia@utn.edu.ec>
 * @returns {undefined}
 */
function resetarTablaMenuSemanal() {
    $('#cuerpoTableSeleccionado tr').remove();
    cuerpo = '<tr><th id="Des">Desayuno</th><th><center><a href="#" id="Desayuno-Lunes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Desayuno-Martes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Desayuno-Miercoles" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Desayuno-Jueves" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Desayuno-Viernes" title="Eliminar"><i class="icon-remove"></i></a></center></th></tr>'
            + '<tr variante="Desayuno-a"><th>a</th><td id="Desayuno-Lunes-a"></td><td id="Desayuno-Martes-a"></td><td id="Desayuno-Miercoles-a"></td><td id="Desayuno-Jueves-a"></td><td id="Desayuno-Viernes-a"></td></tr>'
            + '<tr variante="Desayuno-b"><th>b</th><td id="Desayuno-Lunes-b"></td><td id="Desayuno-Martes-b"></td><td id="Desayuno-Miercoles-b"></td><td id="Desayuno-Jueves-b"></td><td id="Desayuno-Viernes-b"></td></tr>'
            + '<tr><th>Media Maniana</th><th><center><a href="#" id="Media-Maniana-Lunes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Maniana-Martes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Maniana-Miercoles" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Maniana-Jueves" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Maniana-Viernes" title="Eliminar"><i class="icon-remove"></i></a></center></th></tr>'
            + '<tr variante="Media-Maniana-c"><th>c</th><td id="Media-Maniana-Lunes-c"></td><td id="Media-Maniana-Martes-c"></td><td id="Media-Maniana-Miercoles-c"></td><td id="Media-Maniana-Jueves-c"></td><td id="Media-Maniana-Viernes-c"></td></tr>'
            + '<tr><th>Almuerzo</th><th><center><a href="#" id="Almuerzo-Lunes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Almuerzo-Martes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Almuerzo-Miercoles" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Almuerzo-Jueves" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Almuerzo-Viernes" title="Eliminar"><i class="icon-remove"></i></a></center></th></tr>'
            + '<tr variante="Almuerzo-a.Sopa"><th>a.sopa</th><td id="Almuerzo-Lunes-aSopa"></td><td id="Almuerzo-Martes-aSopa"></td><td id="Almuerzo-Miercoles-aSopa"></td><td id="Almuerzo-Jueves-aSopa"></td><td id="Almuerzo-Viernes-aSopa"></td></tr>'
            + '<tr variante="Almuerzo-b1"><th>b.1</th><td id="Almuerzo-Lunes-b1"></td><td id="Almuerzo-Martes-b1"></td><td id="Almuerzo-Miercoles-b1"></td><td id="Almuerzo-Jueves-b1"></td><td id="Almuerzo-Viernes-b1"></td></tr>'
            + '<tr variante="Almuerzo-b2"><th>b.2</th><td id="Almuerzo-Lunes-b2"></td><td id="Almuerzo-Martes-b2"></td><td id="Almuerzo-Miercoles-b2"></td><td id="Almuerzo-Jueves-b2"></td><td id="Almuerzo-Viernes-b2"></td></tr>'
            + '<tr variante="Almuerzo-b3"><th>b.3</th><td id="Almuerzo-Lunes-b3"></td><td id="Almuerzo-Martes-b3"></td><td id="Almuerzo-Miercoles-b3"></td><td id="Almuerzo-Jueves-b3"></td><td id="Almuerzo-Viernes-b3"></td></tr>'
            + '<tr variante="Almuerzo-c"><th>c</th><td id="Almuerzo-Lunes-c"></td><td id="Almuerzo-Martes-c"></td><td id="Almuerzo-Miercoles-c"></td><td id="Almuerzo-Jueves-c"></td><td id="Almuerzo-Viernes-c"></td></tr>'
            + '<tr><th>Media Tarde</th><th><center><a href="#" id="Media-Tarde-Lunes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Tarde-Martes" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Tarde-Miercoles" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Tarde-Jueves" title="Eliminar"><i class="icon-remove"></i></a></center></th><th><center><a href="#" id="Media-Tarde-Viernes" title="Eliminar"><i class="icon-remove"></i></a></center></th></tr>'
            + '<tr variante="Media-Tarde-a"><th>a</th><td id="Media-Tarde-Lunes-a"></td><td id="Media-Tarde-Martes-a"></td><td id="Media-Tarde-Miercoles-a"></td><td id="Media-Tarde-Jueves-a"></td><td id="Media-Tarde-Viernes-a"></td></tr>'
            + '<tr variante="Media-Tarde-b"><th>b</th><td id="Media-Tarde-Lunes-b"></td><td id="Media-Tarde-Martes-b"></td><td id="Media-Tarde-Miercoles-b"></td><td id="Media-Tarde-Jueves-b"></td><td id="Media-Tarde-Viernes-b"></td></tr>'
    $('#cuerpoTableSeleccionado').append(cuerpo);
    $('#cuerpoTableSeleccionado th').addClass('span4');
    $('#cuerpoTableSeleccionado td').addClass('span4');
    idMenus.length = 0;
    idCartaAlimentos.length = 0;
}

// Traer desde ajax o component js 
var variantes = ['a', 'b', 'c', 'aSopa', 'b1', 'b2', 'b3'];

/**
 * @author Sofia Mejia <asmejia@utn.edu.ec>
 * permite eliminar un menu ya ingresado de acuerdo al dia y la hora de menu
 * @param string valor el id de la th seleccionada 
 * @returns la th que coincida vaciada
 */
function buscarVarianteCarta(valor) {
    var alimentosMenu = [];
    $.each(variantes, function(key, variante) {
        idTH = "td#" + valor + "-" + variante;
        if ($(idTH).html()) {
            alimentosMenu.push(idTH);
        }
    });
    if (alimentosMenu.length > 0) {
        var id_Menu;
        bootbox.confirm("Desea eliminar el menu ", function(result) {
            if (result == true) {
                $.each(alimentosMenu, function(key1, td) {
                    var temp_carta_semanal;
                    $id_info = $("#InfoCartaSemanal_id").val();
                    id_Menu = $(td).attr("id_menu");
                    if ($id_info != "") {
                        $('input[id_carta_nutricional="' + $(td).attr("id_menu") + '"]').each(function(index) {
                            temp_carta_semanal = $(this).attr("name");
                            temp_carta_semanal = temp_carta_semanal.split('[');
                            temp_carta_semanal = temp_carta_semanal[3].split(']');
                            temp_carta_semanal = temp_carta_semanal[0];
                        });
                        $(td).text("");
                        var rows = new Array();
                        rows.push('<input type="hidden"   id_carta_nutricional="" name="InfoCartaSemanal[carta_nutricional][""][' + temp_carta_semanal + ']" value="">');
                        $(td).append(rows.join(""));
                    } else {
                        $(td).text("");
                    }
                    var idx = idMenus.indexOf(String(id_Menu)); // Localizamos el indice del elemento en array
                    if (idx != -1)
                        idMenus.splice(idx, 1);
                    if (idMenus.length < 20) {
                        $('#btn-Guardar-Info-Carta').attr('disabled', true);
                    }
                });
            }
        });
    }
}

/**
 *@author Sofia Mejia <asmejia@utn.edu.ec>
 *Busca del menu seleccionado los alimentos y los muestra en un modal
 * @param int id de el menu seleccionado
 */
function busquedaValoresAlimentos(id) {
    url = '/index.php/../../carta/cartaNutricional/buscarValAlimentos';
    $.ajax({
        type: "GET", //GET or POST or PUT or DELETE verb
        url: baseUrl + url,
        data: {idMenu: id}, //Data sent to server
        dataType: "json", //Expected data format from server
        success: function(info) {//On Successful service call
            tableBody = '';
            $('#cuerpoTable').children('tr').remove();
            $.each(info, function(key, value) {
                tableBody += '<tr><td>' + value[0] + '</td> <td>' + value[1] + '</td><td>' + value[2] + '</td><td>' + value[3] + '</td></tr>';
            });
            $('#cuerpoTable').append(tableBody);
        },
        error: function(info) {//On Successful service call
            alert("en mantenimiento");
        }
    });
}
var idMenus = [];
var idCartaAlimentos = [];
var resultBoxAlert = false;
/**
 * Coloca el menu seleccionado en la tabla de menu semanal deacuerdo al dia
 *  de la semana seleccionado
 * @author SofÃ­a MejÃ­a <asmejia@utn.edu.ec>
 * @param int id el id del menu seleccionado
 * @param int diaSemana el id de el dia de la semana seleccionado
 */
var uu;
function busquedaDescripcionAlimentos(id, diaSemana, id_carta_semanal) {
    $id_info = $("#InfoCartaSemanal_id").val();
    url = '/index.php/../../carta/cartaNutricional/buscarTiempoComida';
    $.ajax({
        type: "GET", //GET or POST or PUT or DELETE verb
        url: baseUrl + url,
        data: {idMenu: id}, //Data sent to server
        dataType: "json", //Expected data format from server
        success: function(info) {//On Successful service call
//            repetidos retorna -1 si encuentra el id en el array idMenus
            var repetidos = BuscarMenusRepetidos(id);
//            Si ya existe un menÃº con ese id en la semana valida que no se repita
            if (repetidos != -1) {
                bootbox.alert("Ya existe ese men&uacute; alimenticio para la semana por favor seleccione otro");
            } else {
                uu = info;
                var keysTiempoComida = Object.keys(info);
                var arrayidMenus = info[keysTiempoComida];
                $.each(arrayidMenus, function(idCartaAlimentos, varianteMenu) {
                    var keyVariante = Object.keys(varianteMenu);
                    var nombreA = varianteMenu[keyVariante];
                    //                    agrega el tiempo de comida el dia de semana seleccionada y el variante carta 
                    var day = "td#" + keysTiempoComida + "-" + diaSemana + "-" + keyVariante;
                    //                                valida que el td en el texto este vacio
                    if ($(day).text() == '') {
                        var rows = new Array();
                        $(day).text(nombreA);
                        menu = id.split(',');
                        $(day).attr("id_menu", menu[1]);
                        if ($id_info != "") {
                            rows.push('<input type="hidden"   id_carta_nutricional="' + menu[1] + '" name="InfoCartaSemanal[carta_nutricional][' + menu[1] + '][' + id_carta_semanal + ']" value="' + diaSemana + '">');
                        } else {
                            rows.push('<input type="hidden" id_carta_nutricional="' + menu[1] + '" name="InfoCartaSemanal[carta_nutricional][' + menu[1] + ']" value="' + diaSemana + '">');
                        }
                        $(day).append(rows.join(""));
//                                agrega el id del menu al arreglo idMenus;
                        idMenus.push(menu[1]);
                    } else {
                        remplazarMenu(id, day, nombreA, diaSemana);
                    }
                });
            }
//          para que el arreglo solo tenga un id de menu por lo que se hace los each
            $.unique(idMenus);
//          Valida que el menu este lleno para poder guardarlo
            if (idMenus.length === 20) {
                bootbox.alert("MENU SEMANAL COMPLETADO");
                $('#btn-Guardar-Info-Carta').attr('disabled', false);
                $("#dias").attr('disabled', false);
                $id_info = $("#InfoCartaSemanal_id").val();
                if ($id_info != '') {
                    cerrarCargandoDatosModal();
                }
                if ($id_info != "") {
                    $('[eliminar=yes]').remove();
                }
            }
        },
        error: function(info) {//On Successful service call
            bootbox.alert("No se puede agregar el men&acute;seleccionado a la tabla del men&uacute; semanal");
        }
    });
}

/**
 * Remplazaa el menu dentro de la tabla 
 * @param {int} id cartanutricional seleccionada
 * @param {string} indentificador de la celda seleccionada
 * @param {string} nombre del alimento
 * @param {string} diaSemana seleccionado
 */
function remplazarMenu(id, day, nombre, diaSemana) {
    var temp_carta_semanal;
    $id_info = $("#InfoCartaSemanal_id").val();
    if ($id_info != "") {
        $('input[id_carta_nutricional="' + $(day).attr("id_menu") + '"]').each(function(index) {
            temp_carta_semanal = $(this).attr("name");
            temp_carta_semanal = temp_carta_semanal.split('[');
            temp_carta_semanal = temp_carta_semanal[3].split(']');
            temp_carta_semanal = temp_carta_semanal[0];
        });
    }
//                                        eliminar el menu existente en la tabla
    var id_Menu = $(day).attr("id_menu");
    var idx = idMenus.indexOf(String(id_Menu));
    if (idx != -1)
        idMenus.splice(idx, 1);
    var rows = new Array();
    $(day).text(nombre);
    menu = id.split(',');
    $(day).attr("id_menu", menu[1]);
    if ($id_info != "") {
        rows.push('<input type="hidden" id_carta_nutricional="' + menu[1] + '" name="InfoCartaSemanal[carta_nutricional][' + menu[1] + '][' + temp_carta_semanal + ']" value="' + diaSemana + '">');
    } else {
        rows.push('<input type="hidden" id_carta_nutricional="' + menu[1] + '" name="InfoCartaSemanal[carta_nutricional][' + menu[1] + ']" value="' + diaSemana + '">');
    }
    $(day).append(rows.join(""));
//                                agrega el id del menu al arreglo idMenus;
    idMenus.push(menu[1]);
}
/**
 * @author Sofia Mejia <asmejia@utn.edu.ec>
 * @param {String} id del menu a buscar en el arreglo idMenus
 * @returns -1 si no encuentra el id en arreglo caso contrario si lo encuentra
 * retorna la posicion el el arreglo 
 */
function BuscarMenusRepetidos(id) {
    dato = id.split(',');
//    inArray busca el dato[1] en el arreglo idMenus
    result = jQuery.inArray(dato[1], idMenus);
    return result;
}


function retornarTipoDate(fecha) {
    var parts = fecha.split("/");
    var date = new Date(parts[1] + "/" + parts[0] + "/" + parts[2]);
    return date.getTime();
}

